﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 垃圾小游戏.class1;
using 垃圾小游戏.class4;
using 垃圾小游戏.class5;
using 垃圾小游戏.class6;

namespace 垃圾小游戏.class2
{
     class GameScence:IScenceUPdate
    {
        Map map;
        Snake snake;
        Food food;

        int UpdateIndex = 0;
        public GameScence()
        {
            map = new Map();//初始化地图
            snake = new Snake(10,10);
            food = new Food(snake);
        }

        public object ConosleKey { get; private set; }

        public void Update()
        {
            //程序运行太快，需要变慢(这是笨方法，后面进阶会学的)
            if (UpdateIndex % 6666 == 0)
            {
                map.Draw();
                food.Draw();

                snake.Move();
                snake.Draw();
                //检测是否撞墙
                if(snake.CheckEnd(map))
                {
                    //撞墙后的结束逻辑
                    Game.ChangeScence(E_ScenceType.End);
                }
                snake.CheckEatFood(food);

                UpdateIndex = 0;
            }
            ++UpdateIndex;
            //在控制台中 检测玩家输入 让程序不被检测卡住
            //判断 有没有键盘输入 如果有 才为true
            if (Console.KeyAvailable)
            {
                //检测输入输出不能有延迟，所以只能放到循环外面
                switch (Console.ReadKey(true).Key)
                {
                    case ConsoleKey.W:
                        snake.ChangeDir(E_MoveDir.up);
                        break;
                    case ConsoleKey.A:
                        snake.ChangeDir(E_MoveDir.left);
                        break;
                    case ConsoleKey.S:
                        snake.ChangeDir(E_MoveDir.down);
                        break;
                    case ConsoleKey.D:
                        snake.ChangeDir(E_MoveDir.right);
                        break;
                }
            }
        }
    }
}
